package cn.edu.cqvie.atc.sort;

import java.util.Comparator;

/**
 * 排序接口
 *
 * @param <T>
 */
public interface Sort<T extends Object> {


    /**
     * 排序
     *
     * @param arr 被排序的数组
     * @param c   排序方法
     */
    void sort(T[] arr, Comparator<T> c);

    default void display(T[] arr) {
        System.out.print(" [ ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("]");
    }

    /**
     * 交换数组元素
     *
     * @param arr
     * @param a
     * @param b
     */
    default void swap(T[] arr, int a, int b) {
        T temp = null;
        temp = arr[a];
        arr[b] = arr[a];
        arr[a] = temp;
        temp = null; // help gc
    }

    class IntegerComparator implements Comparator<Integer> {

        @Override
        public int compare(Integer o1, Integer o2) {
            if (o1.equals(o2)) {
                return 0;
            } else if (o1.intValue() > o2.intValue()) {
                return 1;
            } else {
                return -1;
            }
        }
    }
}
